top.window.eventQueue = {

    // 内部函数队列
    fq: [],
    failFunction : null,

    addEvent: function (functions) {
        eventQueue.fq.push(functions);
        return this;
    },

    start : function () {
        eventQueue.continue();
        return this;
    },

    // 初始化
    init: function () {
        eventQueue.fq = [];
        return this;
    },

    // 继续处理事件
    continue: function (needContinue) {
        // 继续执行变量记录
        if (typeof(needContinue) === 'boolean' && needContinue !== true) {
            needContinue = false;
        } else {
            needContinue = true;
        }

        // 如果不允许继续执行且存在失败处理则记录失败处理函数
        if (typeof(eventQueue.failFunction) === 'function') {
            newFunction = eventQueue.failFunction;
            eventQueue.failFunction = null;
            newFunction();
            return;
        }

        // 弹出队列首元素
        if (eventQueue.fq.length <= 0) {
            return;
        }
        var functions = eventQueue.fq.shift();

        // 下一步事件记录
        if (functions.length > 0 && typeof(functions[1]) === 'function') {
            eventQueue.failFunction = functions[1];
        } else {
            eventQueue.failFunction = null;
        }

        // 如果允许继续执行则继续执行
        if (typeof(functions) === 'function' && needContinue) {
            functions();
        } else if (typeof(functions[0]) === 'function' && needContinue) {
            functions[0]();
        }

    },

    // 执行上层事件处理失败函数
    fail: function () {
        eventQueue.continue(false);
    }
};